#!/usr/bin/python
# -*- coding: utf-8 -*-

from DbShell import Db

class Scenario:
    
    gameId = 0
    #levelCount = 0
    _levels = []
    _tasks = []
    _helpers = []
    _bonuses = []
    _comments = []
    _db = None
    
    def __init__(self, gameId = 0):
        self.gameId = gameId
        self._db = Db()
        self._helpers = []
        self._levels = []
        self._tasks = []
        self._comments = []
    
    def addLevelCaption(self, levelNumber, levelCaption):
        self._levels.append({'level':levelNumber,'caption':levelCaption})
    
    def addLevelTask(self,level, txt, forTeam):
        self._tasks.append({'level':level, 'for_team':forTeam, 'txt':txt})
    
    def addLevelHelper(self, level, helperNumber, helperTitle, txt):
        self._helpers.append({'level':level, 'title':helperTitle, 'helper_num':helperNumber, 'txt':txt, 'number':helperNumber})
    
    def addLevelBonus(self, level, txt, forTeam):
        pass

    def addLevelComment(self, level, txt):
        self._comments.append({'level':level, 'txt':txt})
    
    def save(self):
        # Сохраним названия уровней игры
        q = 'DELETE FROM `en_levels` WHERE game_id=%s'
        res = self._db.query(q, self.gameId)  # сначала удалим все подсказки текущей игры
        if res !=0:
            print 'DB ERROR! ', res

        q = 'REPLACE INTO en_levels (`game_id`,`level`,`level_name`) VALUES(%s,%s,%s)'
        for item in self._levels:
            res = self._db.query(q, (self.gameId, item['level'], item['caption']))
            if res !=0:
                print 'DB ERROR! ', res
        
        # Сохраним задания уровней
        q = 'REPLACE INTO en_tasks (`game_id`,`level`,`for_team`,`txt`) VALUES(%s,%s,%s,%s)'
        for item in self._tasks:
            res = self._db.query(q, (self.gameId, item['level'], item['for_team'], item['txt']))
            if res !=0:
                print 'DB ERROR! ', res
        
        # Сохраним подсказки к заданиям
        q = 'DELETE FROM `en_helpers` WHERE game_id=%s'
        res = self._db.query(q, self.gameId)  # сначала удалим все подсказки текущей игры
        if res !=0:
            print 'DB ERROR! ', res
        
        q = 'INSERT INTO en_helpers (`game_id`,`level`,`helper_num`,`helper_title`,`txt`) VALUES(%s,%s,%s,%s,%s)'
        for item in self._helpers:
            res = self._db.query(q, (self.gameId, item['level'], item['helper_num'], item['title'], item['txt']))
            if res !=0:
                print 'DB ERROR! ', res

        # Сохраним бонусные задания с ответами на них
        
        # Сохраним комментарии к уровням
        q = 'REPLACE INTO en_scenario_comments (`game_id`,`level`,`txt`) VALUES(%s,%s,%s)'
        for item in self._comments:
            res = self._db.query(q, (self.gameId, item['level'], item['txt']))
        
        q = 'UPDATE enlab_games SET `scenario_parsed`=1 WHERE game_id=%s';
        self._db.query(q,(self.gameId,))
        
        q = None
        res = None
        item = None
        self._db = None
    
    